<template>
  <div class='address'>
    <van-nav-bar title="地址簿" left-arrow @click-left="backUrl(chosenAddressId)" />
    <div class="content">
      <van-address-list v-model="chosenAddressId" :list="addressList" default-tag-text="默认" @add="onAdd" @edit="onEdit" />
    </div>
  </div>
</template>

<script>

// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
// 例如：import 《组件名称》 from '《组件路径》';
import request from '@/utils/request'

export default {
  name: 'AddressBook',
  // import引入的组件需要注入到对象中才能使用
  components: {},
  data () {
  // 这里存放数据
    return {
      baseAddress: '/address-book',
      chosenAddressId: 0,
      addressList: [],
      status: 0
    }
  },
  // 监听属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 方法集合
  methods: {
    // 获取当前用户的地址列表
    async getaddressList () {
      await request({
        url: this.baseAddress + '/address-list',
        method: 'get'
      }).then(res => {
        const data = res.data.data
        this.transform(data)
      })
    },
    // 添加地址
    onAdd () {
      this.$router.push({
        name: 'AddAddress'
      })
    },
    // 编辑地址
    onEdit (item, index) {
      this.$router.push({
        name: 'EditAddress',
        params: {
          item
        }
      })
    },
    backUrl (id) {
      const url = this.$route.query.backUrl || '/'
      let address = {}
      this.addressList.forEach(item => {
        if (item.id === id) {
          address = item
        }
      })
      this.$router.replace({
        path: url,
        query: {
          address
        }
      })
    },
    // 不同名称字段数据转化
    transform (data) {
      const addressList = []
      data.forEach(item => {
        const address = {
          id: 0,
          name: '',
          tel: '',
          address: '',
          isDefault: false
        }
        address.id = item.id
        address.name = item.name
        address.tel = item.phone
        address.address = item.provinceName + item.cityName + item.districtName + ' ' + item.detail
        address.isDefault = item.isDefault
        addressList.push(address)
      })
      this.addressList = addressList
    }
  },
  // 生命周期 - 创建完成（可以访问当前this实例）
  created () {
    this.getaddressList()
  },
  // 生命周期 - 挂载完成（可以访问DOM元素）
  mounted () {

  },
  beforeCreate () {}, // 生命周期 - 创建之前
  beforeMount () {}, // 生命周期 - 挂载之前
  beforeUpdate () {}, // 生命周期 - 更新之前
  updated () {}, // 生命周期 - 更新之后
  beforeDestroy () {}, // 生命周期 - 销毁之前
  destroyed () {}, // 生命周期 - 销毁完成
  activated () {} // 如果页面有keep-alive缓存功能，这个函数会触发
}
</script>
<style lang="less" scoped>
.address {
  ::v-deep .van-icon-arrow-left {
    color: #333;
  }

  min-height: 100vh;
  background-color: #f7f7f7;
}
</style>
